package com.liuyi.netty.im.lychat.modular.service;

import com.liuyi.netty.im.lychat.modular.caches.GroupCache;
import com.liuyi.netty.im.lychat.modular.entity.Group;
import com.liuyi.netty.im.lychat.modular.mapper.GroupMapper;
import com.liuyi.rapid.develop.mybatis.plus.base.IBaseService;

import java.util.List;

/**
 * <p>
 * 群组表 服务类
 * </p>
 *
 * @author mybatis-plus
 * @since 2021-12-29
 */
public interface IGroupService extends IBaseService<Group> {

    @Override
    default Class<Group> getEntityClass() {
        return Group.class;
    }

    @Override
    @SuppressWarnings("unchecked")
    default GroupMapper getMapper() {
        return (GroupMapper) getBaseMapper();
    }

    GroupCache cache();

    /**
     * 解散群里
     *
     * @param userId  解散人
     * @param groupId 群聊id
     */
    void dissolveGroup(String userId, String groupId);

    /**
     * 创建组
     *
     * @param groupName   组名称
     * @param groupManage 集团管理
     * @param memberIds   组成员id
     * @return {@link String} 群组号
     */
    String createGroup(String groupName, String groupManage, List<String> memberIds);

    /**
     * 创建组
     *
     * @param groupName   组名称
     * @param groupManage 集团管理
     * @return {@link String} 群组号
     */
    String createGroup(String groupName, String groupManage);

    /**
     * 创建组
     *
     * @param groupNo     组没有
     * @param groupName   组名称
     * @param groupManage 集团管理
     */
    void createGroup(String groupNo, String groupName, String groupManage);
}
